// https://leetcode.cn/problems/teemo-attacking/description/

// 算法思路总结：
// 1. 遍历时间序列，比较相邻时间点的间隔
// 2. 如果间隔小于持续时间，累加实际间隔时间
// 3. 如果间隔大于等于持续时间，累加完整持续时间
// 4. 最后补上最后一次攻击的完整持续时间
// 5. 时间复杂度：O(n)，空间复杂度：O(1)

#include <iostream>
using namespace std;

#include <vector>

class Solution 
{
public:
    int findPoisonedDuration(vector<int>& timeSeries, int duration) 
    {
        int n = timeSeries.size();
        int ret = 0;

        for (int i = 0 ; i < n - 1 ; i++)
        {
            if (duration > timeSeries[i + 1] - timeSeries[i])
                ret += timeSeries[i + 1] - timeSeries[i];
            else ret += duration;
        }
        ret += duration;

        return ret;
    }
};

int main()
{
    vector<int> v1 = {1, 4}, v2 = {1, 2};
    int d1 = 2, d2 = 2;
    
    Solution sol;
    cout << sol.findPoisonedDuration(v1, d1) << endl;
    cout << sol.findPoisonedDuration(v2, d2) << endl;

    return 0;
}